package com.atguigu.controller;

import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.Map;
import java.util.TreeMap;

/**
 * @title：
 * @author：Yu
 * @create：2023-02-03 17:54
 * @description：
 */
public class BaseController {
    /**
     * 封装页面提交的分页参数及搜索条件：
     *
     * @param request
     * @returnmap的key为前端的name，value为value
     */
    protected Map<String, Object> getFilters(HttpServletRequest request) {
        //获取到所有请求参数的key值
        Enumeration<String> paramNames = request.getParameterNames();
        Map<String, Object> filters = new TreeMap();
        //循环遍历所有请求参数的key值
        while (paramNames != null && paramNames.hasMoreElements()) {
            //获取到这个key值
            String paramName = (String) paramNames.nextElement();
            //根据key值获取value值，考虑了一个key值对应多个value值得情况
            String[] values = request.getParameterValues(paramName);
            if (values != null && values.length != 0) {
                if (values.length > 1) {
                    //如果有多个value值把value放入map中
                    filters.put(paramName, values);
                } else {
                    //如果只有一个value值则将数组的第一个值放入map中
                    filters.put(paramName, values[0]);
                }
            }
        }
        //分页
        if (!filters.containsKey("pageNum")) {
            filters.put("pageNum", 1);
        }
        if (!filters.containsKey("pageSize")) {
            filters.put("pageSize", 3);
        }
        //返回map集合，该map集合中存储的就是从前台获取到的查询条件
        return filters;
    }
}
